A. Field of the Invention
The present invention relates generally to data communication and, more particularly, to systems and methods that predict the reception of parts of data packets before all the data packets are received.
B. Description of Related Art
Conventional communication networks permit communication devices, such as personal computers, servers, laptops, personal digital assistants (PDAs), and other similar devices, to communicate with one another. The communication over these networks are, sometimes, governed by a packetization protocol which specifies the format and representation of the packets, and a packet exchange protocol that governs what the communication devices must or must not do under specific circumstances. These protocols are often defined according to a layered architecture. These protocols are defined under the relavant standards, as applicable to the domains in which the communication devices operate.
Packetization and packet exchange protocols usually require that the communication devices involved in the communication processes store and respond to packets in separate steps that require allocations of memory to hold one or more packets, which are used in the process of generating the appropriate response. Sometimes, protocol specifications allow one packet to be fragmented into smaller packets before delivery to the recipient. In some occasions, such fragmentation occurs in the network, in the course of transmission and delivery of the packet. Further, in some occasions, the data packet produced by a higher protocol layer is fragmented by a lower protocol layer. Packets produced by a protocol layer are sometimes also referred as Segments; the procedure that breaks up data into packets being sometimes referred to as Segmentation. Further, the process of breaking up of a packet into fragments, i.e. fragmentation, produces properly formatted packets; thus packets are sometimes referred to as fragments. Thus, the terms segments, packets and fragments are used interchangeably.
A conventional technique used by a communication device includes receiving one or more packets, whether they may be referred to as packets, or as fragments or as segments, and storing them in a local memory for later processing. Sometimes, a conventional technique used by a communication device includes receiving one or more packets produced in accordance with the fragmentation or segmentation procedures of a lower layer protocol, storing them in a local memory for later processing in accordance with a higher layer protocol. The packets produced in accordance with the lower layer protocol might be referred to as fragments or segments, or in general packets. Likewise, the packets which are in accordance with the formatting specifications of the upper layer protocol may also be referred to as segements, or fragments or in general packets.
A specific processing requirement that conventional techniques sometimes dictate requires processing of a packet formatted in accordance with the specifications of one protocol layer only after an adequate number of bit-fields from the packet have been received. A further specific processing requirement that conventional technique sometimes dictate requires receiving one or more packets formatted according to a standard for segmentation or fragmentation of a full packet, and storing them in local memory for later processing. This technique results in increased delays due to the time consumed in waiting for the additional bit-fields from many packets and in storing and processing one or more packets in more than one distinct step. The technique also places a demand for a large enough memory that can store this set of bit-fields from one or more packets, and memory resources related to the storing and processing of the associated control information.
Some communication devices, such as mini-computers, micro-controllers, and micro-computers, operate in environments where time delays due to waiting for the arrival of additional packets, and due to storage and processing of packets are unacceptable and/or lack sufficient resources to store the bit-fields from one or more packets or perform necessary networking control procedures. To communicate over a packetized communication network, these devices often must associate themselves as slave devices to one or more host computers that contain the resources to perform operations on behalf of the slave devices, transmit information to the other devices on their behalf, and perform operations on the slave devices in response to requests by network devices with which the slave devices are communicating. Such arrangements can result in delays in the processing of the packets, lead to many practical difficulties, and increase the cost of connecting the devices to the communication network.
Further, any communication device connected to a communication network is required to perform processes for responding to a particular set of one or more bit-fields found in one or more packets; each such packet may be received using one or more packets. The reception of one packet as produced by a higher layer protocol in one communicating device in the form of multiple packets at an other communicating device can occur due to various reasons, for example network procedures such as fragmentation and segmentation. Conventional processes dictate that a communication device respond to such a set of bit-fields from such a set of received packets only after complete reception of all such bit-fields from all the related packets. This leads to delays in generation of responses, thereby, causing inefficiencies or, in some cases, unacceptable performance.
As a result, there exists a need for mechanism that permit communication devices that lack sufficient resources to store one or more bit-fields from one or more received packets and/or perform necessary networking control protocols involving these bit-fields to connect directly and inexpensively to a communication network. Also, there exists a need for mechanisms that permit a communication device to respond to a set of one or more packets sent to it more quickly than permitted by conventional systems.
Systems and methods consistent with the present invention address these and other needs through mechanism that permit communication devices to predict one or more bit-fields in one or more packets before all these packets are received, thereby using their resources efficiently and permitting the devices to respond to these sets of packets before all the packets of the set have been received.
In accordance with the purpose of the invention as embodied and broadly described herein, a system predicts one or more fields of one or more packets that belong to a set of related packets that includes multiple fields. Each of the fields stores a value. The system receives one or more fields of one or more packets and determines the value of at least one of the received fields. The system predicts a value of at least one other one of the fields of one other one of the packets from the set of packets based on the value of the received field before the the other packet containing the other field is received. The system then processes the packet based on the received fiels and the predicted field(s).
In another implementation consistent with the present invention, a method for replying to a set of packets that have multiple fields before the set of packets that are required to be processed for the reply are entirely received, includes receiving one or more fields of one packet; predicting one or more other ones of the fields contained in the other ones of the packets before the other ones of the packets are received; generating a reply packet based on the one or more received fields and the one or more predicted fields; and transmitting the reply packet.
In yet another implementation consistent with the present invention, a computer-readable medium stores instructions executable by one or more processors to perform a method for generating response to packets, having multiple fields, before the set of one or more packets are entirely received. The method includes receiving one or more fields of one packet; predicting one or more other fields of one or more other packets before the one or more other packets are received; and generating a reply packet based on the one or more received fields and the one or more predicted fields.
In a further implementation consistent with the present invention, a method processes packets having multiple fields. The method includes receiving one or more fields of one packet; determining a value of at least one of the received fields; predicting a value of one or more other ones of the fields contained in one more other ones of packets belonging to that set of packets before the one or more other ones of the packets are received; and generating a reply packet based on the one or more received fields and the one or more predicted fields.